home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / AIncludes / QD3DView.a < prev    next >
Encoding:
Text File  |  1998-02-12  |  16.4 KB  |  531 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        QD3DView.a
  3. ;
  4. ;    Contains:    View types and routines                                            
  5. ;
  6. ;    Version:    Technology:    Quickdraw 3D 1.5.4
  7. ;                Release:    Universal Interfaces 3.1
  8. ;
  9. ;    Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10. ;
  11. ;    Bugs?:        Please include the the file and version information (from above) with
  12. ;                the problem description.  Developers belonging to one of the Apple
  13. ;                developer programs can submit bug reports to:
  14. ;
  15. ;                    devsupport@apple.com
  16. ;
  17. ;
  18.     IF &TYPE('__QD3DVIEW__') = 'UNDEFINED' THEN
  19. __QD3DVIEW__ SET 1
  20.  
  21.     IF &TYPE('__QD3D__') = 'UNDEFINED' THEN
  22.     include 'QD3D.a'
  23.     ENDIF
  24.  
  25.     IF &TYPE('__QD3DSTYLE__') = 'UNDEFINED' THEN
  26.     include 'QD3DStyle.a'
  27.     ENDIF
  28.     IF &TYPE('__QD3DSET__') = 'UNDEFINED' THEN
  29.     include 'QD3DSet.a'
  30.     ENDIF
  31.  
  32. ; ******************************************************************************
  33. ; **                                                                             **
  34. ; **                        View Type Definitions                                 **
  35. ; **                                                                             **
  36. ; ****************************************************************************
  37.  
  38.  
  39. ; typedef long                            TQ3ViewStatus
  40. kQ3ViewStatusDone                EQU        0
  41. kQ3ViewStatusRetraverse            EQU        1
  42. kQ3ViewStatusError                EQU        2
  43. kQ3ViewStatusCancelled            EQU        3
  44.  
  45. ; ******************************************************************************
  46. ; **                                                                             **
  47. ; **                        Default Attribute Set                                 **
  48. ; **                                                                             **
  49. ; ****************************************************************************
  50.  
  51.  
  52. ; ******************************************************************************
  53. ; **                                                                             **
  54. ; **                            View Routines                                     **
  55. ; **                                                                             **
  56. ; ****************************************************************************
  57.  
  58. ;
  59. ; extern TQ3ViewObject Q3View_New(void )
  60. ;
  61.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  62.         IMPORT_CFM_FUNCTION Q3View_New
  63.     ENDIF
  64.  
  65. ;
  66. ; extern TQ3Status Q3View_Cancel(TQ3ViewObject view)
  67. ;
  68.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  69.         IMPORT_CFM_FUNCTION Q3View_Cancel
  70.     ENDIF
  71.  
  72. ; ******************************************************************************
  73. ; **                                                                             **
  74. ; **                        View Rendering routines                                 **
  75. ; **                                                                             **
  76. ; ****************************************************************************
  77.  
  78. ;
  79. ; extern TQ3Status Q3View_SetRendererByType(TQ3ViewObject view, TQ3ObjectType theType)
  80. ;
  81.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  82.         IMPORT_CFM_FUNCTION Q3View_SetRendererByType
  83.     ENDIF
  84.  
  85. ;
  86. ; extern TQ3Status Q3View_SetRenderer(TQ3ViewObject view, TQ3RendererObject renderer)
  87. ;
  88.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  89.         IMPORT_CFM_FUNCTION Q3View_SetRenderer
  90.     ENDIF
  91.  
  92. ;
  93. ; extern TQ3Status Q3View_GetRenderer(TQ3ViewObject view, TQ3RendererObject *renderer)
  94. ;
  95.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  96.         IMPORT_CFM_FUNCTION Q3View_GetRenderer
  97.     ENDIF
  98.  
  99. ;
  100. ; extern TQ3Status Q3View_StartRendering(TQ3ViewObject view)
  101. ;
  102.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  103.         IMPORT_CFM_FUNCTION Q3View_StartRendering
  104.     ENDIF
  105.  
  106. ;
  107. ; extern TQ3ViewStatus Q3View_EndRendering(TQ3ViewObject view)
  108. ;
  109.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  110.         IMPORT_CFM_FUNCTION Q3View_EndRendering
  111.     ENDIF
  112.  
  113. ;
  114. ; extern TQ3Status Q3View_Flush(TQ3ViewObject view)
  115. ;
  116.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  117.         IMPORT_CFM_FUNCTION Q3View_Flush
  118.     ENDIF
  119.  
  120. ;
  121. ; extern TQ3Status Q3View_Sync(TQ3ViewObject view)
  122. ;
  123.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  124.         IMPORT_CFM_FUNCTION Q3View_Sync
  125.     ENDIF
  126.  
  127.  
  128. ; ******************************************************************************
  129. ; **                                                                             **
  130. ; **                        View/Bounds/Pick routines                             **
  131. ; **                                                                             **
  132. ; ****************************************************************************
  133.  
  134. ;
  135. ; extern TQ3Status Q3View_StartBoundingBox(TQ3ViewObject view, TQ3ComputeBounds computeBounds)
  136. ;
  137.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  138.         IMPORT_CFM_FUNCTION Q3View_StartBoundingBox
  139.     ENDIF
  140.  
  141. ;
  142. ; extern TQ3ViewStatus Q3View_EndBoundingBox(TQ3ViewObject view, TQ3BoundingBox *result)
  143. ;
  144.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  145.         IMPORT_CFM_FUNCTION Q3View_EndBoundingBox
  146.     ENDIF
  147.  
  148. ;
  149. ; extern TQ3Status Q3View_StartBoundingSphere(TQ3ViewObject view, TQ3ComputeBounds computeBounds)
  150. ;
  151.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  152.         IMPORT_CFM_FUNCTION Q3View_StartBoundingSphere
  153.     ENDIF
  154.  
  155. ;
  156. ; extern TQ3ViewStatus Q3View_EndBoundingSphere(TQ3ViewObject view, TQ3BoundingSphere *result)
  157. ;
  158.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  159.         IMPORT_CFM_FUNCTION Q3View_EndBoundingSphere
  160.     ENDIF
  161.  
  162. ;
  163. ; extern TQ3Status Q3View_StartPicking(TQ3ViewObject view, TQ3PickObject pick)
  164. ;
  165.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  166.         IMPORT_CFM_FUNCTION Q3View_StartPicking
  167.     ENDIF
  168.  
  169. ;
  170. ; extern TQ3ViewStatus Q3View_EndPicking(TQ3ViewObject view)
  171. ;
  172.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  173.         IMPORT_CFM_FUNCTION Q3View_EndPicking
  174.     ENDIF
  175.  
  176.  
  177. ; ******************************************************************************
  178. ; **                                                                             **
  179. ; **                            View/Camera routines                             **
  180. ; **                                                                             **
  181. ; ****************************************************************************
  182.  
  183. ;
  184. ; extern TQ3Status Q3View_GetCamera(TQ3ViewObject view, TQ3CameraObject *camera)
  185. ;
  186.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  187.         IMPORT_CFM_FUNCTION Q3View_GetCamera
  188.     ENDIF
  189.  
  190. ;
  191. ; extern TQ3Status Q3View_SetCamera(TQ3ViewObject view, TQ3CameraObject camera)
  192. ;
  193.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  194.         IMPORT_CFM_FUNCTION Q3View_SetCamera
  195.     ENDIF
  196.  
  197.  
  198. ; ******************************************************************************
  199. ; **                                                                             **
  200. ; **                            View/Lights routines                             **
  201. ; **                                                                             **
  202. ; ****************************************************************************
  203.  
  204. ;
  205. ; extern TQ3Status Q3View_SetLightGroup(TQ3ViewObject view, TQ3GroupObject lightGroup)
  206. ;
  207.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  208.         IMPORT_CFM_FUNCTION Q3View_SetLightGroup
  209.     ENDIF
  210.  
  211. ;
  212. ; extern TQ3Status Q3View_GetLightGroup(TQ3ViewObject view, TQ3GroupObject *lightGroup)
  213. ;
  214.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  215.         IMPORT_CFM_FUNCTION Q3View_GetLightGroup
  216.     ENDIF
  217.  
  218.  
  219. ; ******************************************************************************
  220. ; **                                                                             **
  221. ; **                                Idle Method                                     **
  222. ; **                                                                             **
  223. ; ****************************************************************************
  224.  
  225. ; *    The idle methods allow the application to register callback routines 
  226. ; *    which will be called by the view during especially long operations.
  227. ; *
  228. ; *    The idle methods may also be used to interrupt long renderings or
  229. ; *    traversals.  Inside    the idler callback the application can check for
  230. ; *    Command-Period, Control-C or clicking a "Cancel" button or whatever else
  231. ; *    may be used to let the user interrupt rendering.    
  232. ; *
  233. ; *    It is NOT LEGAL to call QD3D routines inside an idler callback.
  234. ; *
  235. ; *    Return kQ3Failure to cancel rendering, kQ3Success to continue. Don't
  236. ; *    bother posting an error.
  237. ; *
  238. ; *    Q3View_SetIdleMethod registers a callback that can be called
  239. ; *    by the system during rendering.  Unfortunately there is no way yet
  240. ; *    to set timer intervals when you want to be called.  Basically, it is
  241. ; *    up to the application's idler callback to check clocks to see if you
  242. ; *    were called back only a millisecond ago or an hour ago!
  243. ; *
  244. ; *    Q3View_SetIdleProgressMethod registers a callback that also gives
  245. ; *    progress information. This information is supplied by the renderer, and
  246. ; *    may or may not be based on real time.
  247. ; *
  248. ; *    If a renderer doesn't support the progress method, your method will be
  249. ; *    called with current == 0 and completed == 0.
  250. ; *    
  251. ; *    Otherwise, you are GUARANTEED to get called at least 2 or more times:
  252. ; *    
  253. ; *    ONCE            idleMethod(view, 0, n)        -> Initialize, Show Dialog
  254. ; *    zero or more    idleMethod(view, 1..n-1, n) -> Update progress
  255. ; *    ONCE            idleMethod(view, n, n)        -> Exit, Hide Dialog
  256. ; *    
  257. ; *    "current" is guaranteed to be less than or equal to "completed"
  258. ; *    "completed" may change values, but current/complete always indicates
  259. ; *    the degree of completion.
  260. ; *
  261. ; *    The calling conventions aid in managing any data associated with a 
  262. ; *    progress user interface indicator.
  263.  
  264. ;
  265. ; extern TQ3Status Q3View_SetIdleMethod(TQ3ViewObject view, TQ3ViewIdleMethod idleMethod, const void *idleData)
  266. ;
  267.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  268.         IMPORT_CFM_FUNCTION Q3View_SetIdleMethod
  269.     ENDIF
  270.  
  271. ;
  272. ; extern TQ3Status Q3View_SetIdleProgressMethod(TQ3ViewObject view, TQ3ViewIdleProgressMethod idleMethod, const void *idleData)
  273. ;
  274.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  275.         IMPORT_CFM_FUNCTION Q3View_SetIdleProgressMethod
  276.     ENDIF
  277.  
  278.  
  279. ; ******************************************************************************
  280. ; **                                                                             **
  281. ; **                                EndFrame Method                                 **
  282. ; **                                                                             **
  283. ; ****************************************************************************
  284.  
  285. ; *    The end frame method is an alternate way of determining when an
  286. ; *    asynchronous renderer has completed rendering a frame. It differs from
  287. ; *    Q3View_Sync in that notification of the frame completion is the opposite
  288. ; *    direction. 
  289. ; *    
  290. ; *    With Q3View_Sync the application asks a renderer to finish rendering
  291. ; *    a frame, and blocks until the frame is complete.
  292. ; *    
  293. ; *    With the EndFrame method, the renderer tells the application that is has
  294. ; *    completed a frame.
  295. ; *
  296. ; *    If "Q3View_Sync" is called BEFORE this method has been called, this
  297. ; *    method will NOT be called ever.
  298. ; *    
  299. ; *    If "Q3View_Sync" is called AFTER this method has been called, the
  300. ; *    call will return immediately (as the frame has already been completed).
  301.  
  302. ;
  303. ; extern TQ3Status Q3View_SetEndFrameMethod(TQ3ViewObject view, TQ3ViewEndFrameMethod endFrame, void *endFrameData)
  304. ;
  305.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  306.         IMPORT_CFM_FUNCTION Q3View_SetEndFrameMethod
  307.     ENDIF
  308.  
  309.  
  310. ; ******************************************************************************
  311. ; **                                                                             **
  312. ; **                            Push/Pop routines                                 **
  313. ; **                                                                             **
  314. ; ****************************************************************************
  315.  
  316. ;
  317. ; extern TQ3Status Q3Push_Submit(TQ3ViewObject view)
  318. ;
  319.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  320.         IMPORT_CFM_FUNCTION Q3Push_Submit
  321.     ENDIF
  322.  
  323. ;
  324. ; extern TQ3Status Q3Pop_Submit(TQ3ViewObject view)
  325. ;
  326.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  327.         IMPORT_CFM_FUNCTION Q3Pop_Submit
  328.     ENDIF
  329.  
  330.  
  331. ; ******************************************************************************
  332. ; **                                                                             **
  333. ; **        Check if bounding box is visible in the viewing frustum.  Transforms **
  334. ; **        the bbox by the current local_to_world transformation matrix and     **
  335. ; **        does a clip test to see if it lies in the viewing frustum.             **
  336. ; **        This can be used by applications to cull out large chunks of scenes     **
  337. ; **        that are not going to be visible.                                     **
  338. ; **                                                                             **
  339. ; **        The default implementation is to always return kQ3True.  Renderers     **
  340. ; **        may override this routine however to do the checking.                 **
  341. ; **                                                                             **
  342. ; ****************************************************************************
  343.  
  344. ;
  345. ; extern TQ3Boolean Q3View_IsBoundingBoxVisible(TQ3ViewObject view, const TQ3BoundingBox *bbox)
  346. ;
  347.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  348.         IMPORT_CFM_FUNCTION Q3View_IsBoundingBoxVisible
  349.     ENDIF
  350.  
  351.  
  352. ; ******************************************************************************
  353. ; **                                                                             **
  354. ; **                            DrawContext routines                             **
  355. ; **                                                                             **
  356. ; ****************************************************************************
  357.  
  358. ;
  359. ; extern TQ3Status Q3View_SetDrawContext(TQ3ViewObject view, TQ3DrawContextObject drawContext)
  360. ;
  361.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  362.         IMPORT_CFM_FUNCTION Q3View_SetDrawContext
  363.     ENDIF
  364.  
  365. ;
  366. ; extern TQ3Status Q3View_GetDrawContext(TQ3ViewObject view, TQ3DrawContextObject *drawContext)
  367. ;
  368.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  369.         IMPORT_CFM_FUNCTION Q3View_GetDrawContext
  370.     ENDIF
  371.  
  372.  
  373. ; ******************************************************************************
  374. ; **                                                                             **
  375. ; **                            Graphics State routines                             **
  376. ; **                                                                             **
  377. ; ** The graphics state routines can only be called while rendering (ie. in     **
  378. ; ** between calls to start and end rendering calls).  If they are called     **
  379. ; ** outside of a rendering loop, they will return with error.                 **
  380. ; **                                                                             **
  381. ; ****************************************************************************
  382.  
  383. ; ******************************************************************************
  384. ; **                                                                             **
  385. ; **                            Transform routines                                 **
  386. ; **                                                                             **
  387. ; ****************************************************************************
  388.  
  389. ;
  390. ; extern TQ3Status Q3View_GetLocalToWorldMatrixState(TQ3ViewObject view, TQ3Matrix4x4 *matrix)
  391. ;
  392.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  393.         IMPORT_CFM_FUNCTION Q3View_GetLocalToWorldMatrixState
  394.     ENDIF
  395.  
  396. ;
  397. ; extern TQ3Status Q3View_GetWorldToFrustumMatrixState(TQ3ViewObject view, TQ3Matrix4x4 *matrix)
  398. ;
  399.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  400.         IMPORT_CFM_FUNCTION Q3View_GetWorldToFrustumMatrixState
  401.     ENDIF
  402.  
  403. ;
  404. ; extern TQ3Status Q3View_GetFrustumToWindowMatrixState(TQ3ViewObject view, TQ3Matrix4x4 *matrix)
  405. ;
  406.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  407.         IMPORT_CFM_FUNCTION Q3View_GetFrustumToWindowMatrixState
  408.     ENDIF
  409.  
  410.  
  411. ; ******************************************************************************
  412. ; **                                                                             **
  413. ; **                            Style state routines                             **
  414. ; **                                                                             **
  415. ; ****************************************************************************
  416.  
  417. ;
  418. ; extern TQ3Status Q3View_GetBackfacingStyleState(TQ3ViewObject view, TQ3BackfacingStyle *backfacingStyle)
  419. ;
  420.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  421.         IMPORT_CFM_FUNCTION Q3View_GetBackfacingStyleState
  422.     ENDIF
  423.  
  424. ;
  425. ; extern TQ3Status Q3View_GetInterpolationStyleState(TQ3ViewObject view, TQ3InterpolationStyle *interpolationType)
  426. ;
  427.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  428.         IMPORT_CFM_FUNCTION Q3View_GetInterpolationStyleState
  429.     ENDIF
  430.  
  431. ;
  432. ; extern TQ3Status Q3View_GetFillStyleState(TQ3ViewObject view, TQ3FillStyle *fillStyle)
  433. ;
  434.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  435.         IMPORT_CFM_FUNCTION Q3View_GetFillStyleState
  436.     ENDIF
  437.  
  438. ;
  439. ; extern TQ3Status Q3View_GetHighlightStyleState(TQ3ViewObject view, TQ3AttributeSet *highlightStyle)
  440. ;
  441.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  442.         IMPORT_CFM_FUNCTION Q3View_GetHighlightStyleState
  443.     ENDIF
  444.  
  445. ;
  446. ; extern TQ3Status Q3View_GetSubdivisionStyleState(TQ3ViewObject view, TQ3SubdivisionStyleData *subdivisionStyle)
  447. ;
  448.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  449.         IMPORT_CFM_FUNCTION Q3View_GetSubdivisionStyleState
  450.     ENDIF
  451.  
  452. ;
  453. ; extern TQ3Status Q3View_GetOrientationStyleState(TQ3ViewObject view, TQ3OrientationStyle *fontFacingDirectionStyle)
  454. ;
  455.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  456.         IMPORT_CFM_FUNCTION Q3View_GetOrientationStyleState
  457.     ENDIF
  458.  
  459. ;
  460. ; extern TQ3Status Q3View_GetReceiveShadowsStyleState(TQ3ViewObject view, TQ3Boolean *receives)
  461. ;
  462.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  463.         IMPORT_CFM_FUNCTION Q3View_GetReceiveShadowsStyleState
  464.     ENDIF
  465.  
  466. ;
  467. ; extern TQ3Status Q3View_GetPickIDStyleState(TQ3ViewObject view, unsigned long *pickIDStyle)
  468. ;
  469.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  470.         IMPORT_CFM_FUNCTION Q3View_GetPickIDStyleState
  471.     ENDIF
  472.  
  473. ;
  474. ; extern TQ3Status Q3View_GetPickPartsStyleState(TQ3ViewObject view, TQ3PickParts *pickPartsStyle)
  475. ;
  476.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  477.         IMPORT_CFM_FUNCTION Q3View_GetPickPartsStyleState
  478.     ENDIF
  479.  
  480. ;
  481. ; extern TQ3Status Q3View_GetAntiAliasStyleState(TQ3ViewObject view, TQ3AntiAliasStyleData *antiAliasData)
  482. ;
  483.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  484.         IMPORT_CFM_FUNCTION Q3View_GetAntiAliasStyleState
  485.     ENDIF
  486.  
  487.  
  488. ; ******************************************************************************
  489. ; **                                                                             **
  490. ; **                        Attribute state routines                             **
  491. ; **                                                                             **
  492. ; ****************************************************************************
  493.  
  494. ;
  495. ; extern TQ3Status Q3View_GetDefaultAttributeSet(TQ3ViewObject view, TQ3AttributeSet *attributeSet)
  496. ;
  497.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  498.         IMPORT_CFM_FUNCTION Q3View_GetDefaultAttributeSet
  499.     ENDIF
  500.  
  501. ;
  502. ; extern TQ3Status Q3View_SetDefaultAttributeSet(TQ3ViewObject view, TQ3AttributeSet attributeSet)
  503. ;
  504.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  505.         IMPORT_CFM_FUNCTION Q3View_SetDefaultAttributeSet
  506.     ENDIF
  507.  
  508.  
  509. ;
  510. ; extern TQ3Status Q3View_GetAttributeSetState(TQ3ViewObject view, TQ3AttributeSet *attributeSet)
  511. ;
  512.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  513.         IMPORT_CFM_FUNCTION Q3View_GetAttributeSetState
  514.     ENDIF
  515.  
  516. ;
  517. ; extern TQ3Status Q3View_GetAttributeState(TQ3ViewObject view, TQ3AttributeType attributeType, void *data)
  518. ;
  519.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  520.         IMPORT_CFM_FUNCTION Q3View_GetAttributeState
  521.     ENDIF
  522.  
  523.  
  524.  
  525.     ENDIF ; __QD3DVIEW__ 
  526.  
  527.